package gybase04

import groovy.transform.TypeChecked
import groovy.transform.TypeCheckingMode

/**
 ********************************************************
 * Author: chinadragon
 * Time: 2021/12/26 下午5:07
 * Name:
 * Overview:
 * Usage:
 ********************************************************
 *
 * 不进行安全检查，在运行时抛出异常，怎么解决？
 * 使用@TypeChecked 注解
 */
class Person1 {
    def dream(){
        println" Person1 I have a dream !"
    }
}

class Person2 {
    def dream(){
        println" Person2 I have a dream !"
    }
}

def func (person){
    person.dream()
}

//@TypeChecked //安全检查，强制编译检查，这就会失去动态的特性
//def func (person){
//    person.dream()
//}

func(new Person1())
func(new Person2())

// Person1 I have a dream !
// Person2 I have a dream !

@TypeChecked
class Test{
    @TypeChecked(TypeCheckingMode.SKIP)//跳过检查
    def func (person){
        person.dream()
    }

//    def func (person){ //这里报错
//        person.dream()
//    }
}